package org.framework.common.api.service.dao;

import java.util.List;

import org.framework.common.api.entity.CommonFile;
import org.framework.common.api.service.repository.CommonRepositoryAware;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

public interface CommonFileDao extends CommonRepositoryAware<CommonFile, String> {

	/**
	 * 获取版本号.
	 * @param filename
	 * @return
	 * @author chanlong(陈龙)
	 * @date 2016年4月24日 下午1:32:00
	 */
	@Query("select max(o.version) from CommonFile o where o.name = :filename")
	public String getVersion(@Param("filename") final String filename) throws Exception;
	
	/**
	 * 获取文件列表.
	 * @param recordId
	 * @return
	 * @author chanlong(陈龙)
	 * @date 2016年4月24日 下午1:32:14
	 */
	public List<CommonFile> findByRecordId(final String recordId) throws Exception;

	/**
	 * 删除文件.
	 * @param ids
	 * @throws Exception
	 * @author chanlong(陈龙)
	 * @date 2016年4月24日 下午2:49:54
	 */
	@Modifying
	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
	@Query("delete CommonFile o where o.id in (:ids)")
	public void deleteByIds(@Param("ids") String[] ids) throws Exception;
}
